[高分]急求C++哈夫曼编/译码器代码--附加分

来源:百度知道 编辑:UC知道 时间:2024/05/27 01:34:00
问题:我只学过C++ ----C的任何语言都不要.★注意★我在网上找了好久,不要C语言的代码
一、问题描述:
利用哈夫曼编码进行信息通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站写一个哈夫曼码的编/译码系统。
基本功能:
一个完整的系统应用具有以下功能:
初始化:输入一串字符(正文),计算不同字符(包括空格)的数目以及每种字符出现的频率(以该种字符出现的次数作为其出现频率),根据权值建立哈夫曼树,输出每种字符的哈夫曼编码.
编码: 利用求出的哈夫曼编码,对该正文进编码,并输出.
译码:对于得到的一串编码,利用以求得的哈夫曼编码进行译码,将译出的正文输出.
输出哈夫曼树形态:以树的形式输出哈夫曼树在黑屏上.

数据测试
(1)
①正文初试化 译码:“THIS PROGRAM IS MY FAVORITE”。
②统计字符出现次数
字符 A B C D E F G H I J K L M
频度 186 64 13 22 32 103 21 15 47 1 5 32 20 20
③根据次数求出哈夫曼编码并输出
字符 N O P Q R S T U V W X Y Z
频度 57 63 15 1 48 51 80 23 8 18 1 16 1
④以树的形式输出哈夫曼树.

⑵编码....利用的到的编码输出密文 101011101010101[只有1和0]
(3)译码 将密文输入可得到 THIS PROGRAM IS MY FAVORITE
只要纯的C++ 不要任何C语言的代码 ,比如输出 一定要cout<<
开空间要用new语句==
谢谢

楼上的 都是没用的~~~~·搜索 谁都 会~~~~~~~不行

下周问问电脑老师

#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
#include"Queue.h"
struct field {
int coding[10];
char name;
int Weight;
};

const int DefaultSize = 30;
/* 声明“扩充二叉树”的类 */
template <class Type> class ExtBinTree;
//定义“扩充二叉树”的结点
template <class Type> class Element {
friend class ExtBinTree<Type>;
private:
Type data;
char name;
Element<Type> * leftChild, * rightChild;
public:
Element ( ) : leftChild (NULL),
rightChild (NULL) { }
Element ( Type item,char d,
Element<Type> *left = NULL,
Element<Type> *right = NULL ) :
data (item), name(d), leftChild (left), rightChild
(right) { }
void SetData ( const Type& item )
{ data = item; }